from collections import Counter
import joblib
import time
import os
import pandas as pd

from Utils.TimeUtils import get_formatted_time

def test():

    predictions = []
    # 记录检驗时间
    start_time = time.time()

    # 加载Pickle文件中的模型
    loaded_model = joblib.load('./trained_model-0.08.pkl')

    #加载测试集
    for csv_file in os.listdir('./test_dataset/'):
        if csv_file.endswith('.csv'):
            test_data = pd.read_csv('./test_dataset/' + csv_file)
            # 编码时间信息 秒为单位
            test_data['time'] = pd.to_datetime(test_data['time'])
            test_data['time'] = test_data['time'].astype('int64')
            #取所有行， 1: 列
            X_test = test_data.iloc[:, 1:]
            # 使用加载的模型进行预测
            prediction = loaded_model.predict(X_test)
            #取出现最多次的结果
            prediction_counts = Counter(prediction)
            most_common_prediction = prediction_counts.most_common(1)[0][0]

            # 打印预消息
            print(f"渔船ID：{test_data.iloc[1, 0]}，预测结果：{most_common_prediction}")

            # 将预消息添加到列表中
            predictions.append(most_common_prediction)
    
    # 将 DataFrame 保存为 CSV 文件
    result_df = pd.DataFrame({'渔船ID': range(18330, 18330 + len(predictions)), 'type': predictions})
    result_df.to_csv('./预测结果02.csv', index=False)

    end_time = time.time()

    print("总时间花费:", get_formatted_time(start_time, end_time))
    

if __name__ == "__main__":
    test()